import request from '@/utils/request'

// ==================== 角色管理接口 ====================

/**
 * 获取角色列表（支持分页和搜索）
 * @param {Object} params - 查询参数
 * @param {number} params.pageNumber - 页码
 * @param {number} params.pageSize - 每页数量
 * @param {string} params.name - 角色名称（模糊搜索）
 * @returns {Promise} 返回角色列表
 */
export function getRoleListWithPagination(params) {
  return request({
    url: '/api/role/list',
    method: 'get',
    params
  })
}

/**
 * 根据ID获取角色详情
 * @param {number} id - 角色ID
 * @returns {Promise} 返回角色详情
 */
export function getRoleDetail(id) {
  return request({
    url: `/api/role/${id}`,
    method: 'get'
  })
}

/**
 * 创建角色
 * @param {Object} data - 角色数据
 * @param {string} data.name - 角色名称
 * @param {string} data.description - 角色描述
 * @param {Array} data.permissions - 权限列表
 * @returns {Promise} 返回创建结果
 */
export function createRole(data) {
  return request({
    url: '/api/role',
    method: 'post',
    data
  })
}

/**
 * 更新角色
 * @param {number} id - 角色ID
 * @param {Object} data - 角色数据
 * @param {string} data.name - 角色名称
 * @param {string} data.description - 角色描述
 * @param {Array} data.permissions - 权限列表
 * @returns {Promise} 返回更新结果
 */
export function updateRole(id, data) {
  return request({
    url: `/api/role/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除角色
 * @param {number} id - 角色ID
 * @returns {Promise} 返回删除结果
 */
export function deleteRole(id) {
  return request({
    url: `/api/role/${id}`,
    method: 'delete'
  })
}

/**
 * 批量删除角色
 * @param {Array} ids - 角色ID数组
 * @returns {Promise} 返回删除结果
 */
export function batchDeleteRoles(ids) {
  return request({
    url: '/api/role/batch-delete',
    method: 'post',
    data: { ids }
  })
}

// ==================== 角色权限管理接口 ====================

/**
 * 获取所有权限列表
 * @returns {Promise} 返回权限列表
 */
export function getPermissionList() {
  return request({
    url: '/api/permission/list',
    method: 'get'
  })
}

/**
 * 获取角色权限
 * @param {number} roleId - 角色ID
 * @returns {Promise} 返回角色权限列表
 */
export function getRolePermissions(roleId) {
  return request({
    url: `/api/role/${roleId}/permissions`,
    method: 'get'
  })
}

/**
 * 更新角色权限
 * @param {number} roleId - 角色ID
 * @param {Array} permissionIds - 权限ID数组
 * @returns {Promise} 返回更新结果
 */
export function updateRolePermissions(roleId, permissionIds) {
  return request({
    url: `/api/role/${roleId}/permissions`,
    method: 'put',
    data: { permissionIds }
  })
}

// ==================== 角色用户管理接口 ====================

/**
 * 获取角色下的用户列表
 * @param {number} roleId - 角色ID
 * @param {Object} params - 查询参数
 * @param {number} params.page - 页码
 * @param {number} params.pageSize - 每页数量
 * @returns {Promise} 返回用户列表
 */
export function getRoleUsers(roleId, params) {
  return request({
    url: `/api/role/${roleId}/users`,
    method: 'get',
    params
  })
}

/**
 * 移除用户角色（从角色管理角度）
 * @param {number} roleId - 角色ID
 * @param {Array} userIds - 用户ID数组
 * @returns {Promise} 返回移除结果
 */
export function removeUsersFromRole(roleId, userIds) {
  return request({
    url: `/api/role/${roleId}/remove-users`,
    method: 'post',
    data: { userIds }
  })
}

/**
 * 批量分配用户到角色（从角色管理角度）
 * @param {number} roleId - 角色ID
 * @param {Array} userIds - 用户ID数组
 * @returns {Promise} 返回分配结果
 */
export function addUsersToRole(roleId, userIds) {
  return request({
    url: `/api/role/${roleId}/add-users`,
    method: 'post',
    data: { userIds }
  })
}